#pragma once

#include <QLabel>
#include <QWidget>
#include <QLineEdit>
#include <QPushButton>
#include <QVBoxLayout>
#include "sessionfriendarea.h"
#include "messageeditarea.h"
#include "messageshowarea.h"

class MainWidget : public QWidget
{
    Q_OBJECT
public:
    static MainWidget* getInstance();
private:
    MainWidget(QWidget *parent = nullptr);      //对于单例模式来说，最重要的是限制创建实例，把构造私有
    ~MainWidget() = default;
    void initMainWindow();      // 初始化主窗口的样式布局
    void initLeftWindow();      // 初始化左侧窗口布局
    void initMidWindow();       // 初始化中间窗口布局
    void initRightWindow();     // 初始化右侧窗口布局
    void initSignalSlot();      // 初始化信号槽
    void loadSessionList();     // 加载会话列表
    void loadFriendList();      // 加载好友列表
    void loadApplyList();       // 加载好友申请列表
    enum ActiveTab {
        SEESION_LIST,
        FRIEND_LIST,
        APPLY_LIST
    };
    ActiveTab activeTab = SEESION_LIST;
private slots:
    void switchTabToSeesion();
    void switchTabToFriend();
    void switchTabToApply();

private:  
    QWidget* windowLeft;            // 窗口最左侧部分   
    QWidget* windowMid;             // 窗口中间部分   
    QWidget* windowRight;           // 窗口右侧部分  
    QPushButton* userAvatar;        // 用户头像
    QPushButton* sessionTabBtn;     // 会话标签页按钮  
    QPushButton* friendTabBtn;      // 好友标签页按钮  
    QPushButton* applyTabBtn;       // 好友申请标签页按钮  
    QPushButton* addFriendBtn;      // 添加好友按钮
    QPushButton* extraBtn;          // 显示会话详情按钮
    QLineEdit* searchEdit;          // 用户搜索框   
    QLabel* sessionTitleLabel;      // 显示会话标题
    SessionFriendArea* sessionFriendArea;
    MessageShowArea* messageShowArea;
    MessageEditArea* messageEditArea;
    static MainWidget* instance;    // 单例对象
};

